package com.nlx.notes.module.service.gold;

import com.nlx.notes.module.bean.dto.gold.*;
import com.nlx.notes.module.bean.vo.PageResultVo;
import com.nlx.notes.module.bean.vo.gold.*;

public interface GoldManageService {

    /**
     * 添加购买黄金数据
     * @param goldPurchaseAddDTO 参数
     * @return GoldPurchaseAddVO
     */
    GoldPurchaseBaseInfoVO saveGold(GoldPurchaseAddDTO goldPurchaseAddDTO);

    /**
     * 查询黄金列表信息
     * @param goldPurchasePageDTO 参数
     * @return GoldPurchasePageVO
     */
    PageResultVo<GoldPurchasePageVO> goldPage(GoldPurchasePageDTO goldPurchasePageDTO);

    /**
     * 获取用户的黄金概览信息
     * @param userId 用户id
     * @return GoldOverviewVO
     */
    GoldOverviewVO overview(Long userId);

    /**
     * 获取黄金详情
     * @param goldId 黄金id
     * @return GoldPurchaseEditVo
     */
    GoldPurchaseEditVo detail(Long goldId,Long userId);

    /**
     * 修改黄金数据
     * @param goldPurchaseEditDTO 参数
     * @return GoldPurchaseBaseInfoVO
     */
    GoldPurchaseEditVo editGold(GoldPurchaseEditDTO goldPurchaseEditDTO);

    /**
     * 获取用户黄金的售卖概览
     * @param userId 用户id
     * @return GoldSaleOverviewVO
     */
    GoldSaleOverviewVO findGoldSaleOverview(Long userId);

    /**
     * 查询用户的售卖列表
     * @param goldSalePageQueryDTO 分页参数
     * @return GoldSalePageVO
     */
    PageResultVo<GoldSalePageVO> goldSalePage(GoldSalePageQueryDTO goldSalePageQueryDTO);

    /**
     * 卖出黄金
     * @return boolean
     */
    boolean saleGold(GoldSaleAddDTO goldSaleAddDTO);

    /**
     * 删除黄金
     * @param goldId 黄金id
     * @param userId 用户id
     * @return
     */
    boolean deleteGold(Long goldId, Long userId);
}
